package mististore;

import java.io.IOException;
import javax.servlet.http.*;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import java.util.regex.*;

@SuppressWarnings("serial")
public class UsuarioServlet extends HttpServlet
{
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
	{
		resp.setContentType("text/plain");
		
		UsuarioDatos usuario=new UsuarioDatos();
	    String nombre=req.getParameter("nombre");
	    String email=req.getParameter("email");
	    
	    Pattern pn=Pattern.compile("[A-Z.a-z ]{4,60}");
	    Pattern p=Pattern.compile("[A-Za-z]{1,1}[A-Za-z.0-9_-]{3,60}@gmail.com");
	    Matcher mn=pn.matcher(nombre);
	    Matcher m=p.matcher(email);

	    boolean matchFoundn=mn.matches();
	    boolean matchFound=m.matches();

	    if(nombre!=null&&email!=null&&matchFound&&matchFoundn)
	    {
	    	usuario.insert(email,nombre,"","","","");
	    
	        Properties props=new Properties();
	        Session session=Session.getDefaultInstance(props,null);
	        
	        try
	        {
	            Message msg = new MimeMessage(session);
	            msg.setFrom(new InternetAddress("romeluko@gmail.com","Admin MistiStore"));
	            msg.addRecipient(Message.RecipientType.TO,new InternetAddress(email,nombre));
	            msg.setSubject("Confirmacion de correo electronico - MistiStore");
	            //msg.setText(msgBody);
	            
	            final MimeBodyPart textPart = new MimeBodyPart();
	            textPart.setText("Bienvenido! "+nombre+" \n este es un mensaje para confirmar tu correo electrónico, haz clic en el siguiente enlace. Bienvenido =)");
	            final MimeBodyPart htmlPart = new MimeBodyPart();
	            htmlPart.setContent("Bienvenido! "+nombre+" <br /><br />Este es un mensaje para confirmar tu correo electrónico, haz clic en el siguiente enlace <a href=\"http://google.com\">Confirmar Registro</a>. <br /><br />Gracias por tu preferencia =)<br /><br />El Equipo de Desarrollo de MistiStore", "text/html");
	            
	            final Multipart mp=new MimeMultipart();
	            mp.addBodyPart(textPart);
	            mp.addBodyPart(htmlPart);
	            msg.setContent(mp);

	            Transport.send(msg);
	        }
	        catch (AddressException e) {
	            // ...
	        }
	        catch (MessagingException e) {
	            // ...
	        }
		    
		    resp.sendRedirect("search.jsp");
	    }
	    else
	    	resp.getWriter().println("Algo malo pasó! tu nombre tiene menos de 4 letras o más de 60? o tu correo no es de gmail?");
	}
	
}